﻿// ===============================================================================
// SqlType.cs
// EOS Framework
// ===============================================================================
// Copyright (c) EOS Development Group. All rights reserved.
// ===============================================================================

namespace EOS.Framework.Contracts.Schema
{
    using System;

    /// <summary>
    /// Specifies the sql data type for a column.
    /// </summary>
    [Serializable]
    public enum SqlType
    {
        /// <summary>
        /// Datatype is not known.
        /// </summary>
        Unknown,
        /// <summary>
        /// The data is a bool (true of false).
        /// </summary>
        Boolean,
        /// <summary>
        /// The data is a short byte (integer with 4 bits).
        /// </summary>
        SByte,
        /// <summary>
        /// The data is a byte (integer with 8 bits).
        /// </summary>
        Byte,
        /// <summary>
        /// The data is a integer with 16 bits.
        /// </summary>
        Int16,
        /// <summary>
        /// The data is an integer with 16 bits which must be greater or equals than 0.
        /// </summary>
        UInt16,
        /// <summary>
        /// The data is an integer with 32 bits.
        /// </summary>
        Int32,
        /// <summary>
        /// The data is an integer with 32 bits which must be greater or equals than 0.
        /// </summary>
        UInt32,
        /// <summary>
        /// The data is an integer with 64 bits.
        /// </summary>
        Int64,
        /// <summary>
        /// Data is an integer with 64 bits which must be greater or equals than 0.
        /// </summary>
        UInt64,
        /// <summary>
        /// The data is an decimal.
        /// </summary>
        Decimal,
        /// <summary>
        /// The data is an float
        /// </summary>
        Float,
        /// <summary>
        /// The data is an double (float with better precision).
        /// </summary>
        Double,
        /// <summary>
        /// The data is a small money value.
        /// </summary>
        SmallMoney,
        /// <summary>
        /// The data is a money value.
        /// </summary>
        Money,
        /// <summary>
        /// The data is a small datetime value.
        /// </summary>
        SmallDateTime,
        /// <summary>
        /// The data is a datatime.
        /// </summary>
        DateTime,
        /// <summary>
        /// The data is a character string in ANSI format.
        /// </summary>
        AnsiChar,
        /// <summary>
        /// The data is a character string in ANSI format with variable length.
        /// </summary>
        AnsiVarChar,
        /// <summary>
        /// The data is a character string optimized for long lengths as ANSI format.
        /// </summary>
        AnsiText,
        /// <summary>
        /// The data is a character string with maximum length in ASNI format.
        /// </summary>
        AnsiVarCharMax,
        /// <summary>
        /// The data is a single character,
        /// </summary>
        Char,
        /// <summary>
        /// The data is a character string with variable lenth.
        /// </summary>
        VarChar,
        /// <summary>
        /// The data is a character string optimized for long lengths.
        /// </summary>
        Text,
        /// <summary>
        /// The data is a character string with maximum length.
        /// </summary>
        VarCharMax,
        /// <summary>
        /// Data type is saved binary.
        /// </summary>
        Binary,
        /// <summary>
        /// Data type is saved binary, the length is variable.
        /// </summary>
        VarBinary,
        /// <summary>
        /// The data is an image.
        /// </summary>
        Image,
        /// <summary>
        /// Binary data with maximum size. 
        /// </summary>
        VarBinaryMax,
        /// <summary>
        /// The data is a variant.
        /// </summary>
        Variant,
        /// <summary>
        /// The data is a timestamp.
        /// </summary>
        Timestamp,
        /// <summary>
        /// The data is a GUID.
        /// </summary>
        GUID
    }
}
